/** 测试函数的运行时间
 * @param {function} func - 要测试的函数
 * @param {number} [time=1] - 要测试的次数
 */
export function testTime(func, time = 1) {
  console.log(`开始测试函数 ${func.name} ${time} 次`);
  const begin = Date.now();
  func();
  const end = Date.now();
  console.log(`函数 ${func.name} 测试 ${time} 次结束，总耗时 ${end - begin} ms，平均耗时 ${((end - begin) / time).toFixed(2)} ms`);
  return {
    函数: func.name,
    测试次数: time,
    总耗时: end - begin + ' ms',
    平均耗时: ((end - begin) / time).toFixed(2) + ' ms',
  }
}

const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
/** 生成随机字符串，包含大小写字母和数字
 * @param {number} [length] - 字符串长度，默认32
 * @returns {string} - 随机生成的字符串
 */
export function generateRandomString(length = 32) {
  const generate = new Array(length);
  const cl = characters.length;
  for (let i = 0; i < generate.length; i++)
    generate[i] = characters.charAt(Math.floor(Math.random() * cl));
  return generate.join('');
}

/** 生成随机字符串数组
 * @param {number} count - 数组个数
 * @param {number} [length] - 字符串长度
 * @returns {string[]} - 随机字符串数组
 */
export function generateRandomStringArray(count, length) {
  const array = new Array(count);
  for (let i = 0; i < count; i++)
    array[i] = generateRandomString(length);
  return array;
}